package com.waikuai.shop.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.waikuai.shop.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户Mapper接口
 * @author waikuai
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return 用户信息
     */
    User findByUsername(@Param("username") String username);

    /**
     * 根据手机号查询用户
     * @param phone 手机号
     * @return 用户信息
     */
    User findByPhone(@Param("phone") String phone);

    /**
     * 根据邮箱查询用户
     * @param email 邮箱
     * @return 用户信息
     */
    User findByEmail(@Param("email") String email);

    /**
     * 根据账户查询用户（支持用户名、手机号、邮箱）
     * @param account 账户
     * @return 用户信息
     */
    User findByAccount(@Param("account") String account);

    /**
     * 更新用户最后登录信息
     * @param userId 用户ID
     * @param loginIp 登录IP
     * @return 影响行数
     */
    int updateLastLoginInfo(@Param("userId") Long userId, @Param("loginIp") String loginIp);

    /**
     * 插入用户角色关联
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return 影响行数
     */
    int insertUserRole(@Param("userId") Long userId, @Param("roleId") Long roleId);

    /**
     * 删除用户的所有角色关联
     * @param userId 用户ID
     * @return 影响行数
     */
    int deleteUserRoles(@Param("userId") Long userId);

    /**
     * 查询所有部门列表
     * @return 部门列表
     */
    java.util.List<String> selectAllDepartments();
}